図1 task_struct構造体の概念図。プロセスが使用しているメモリーやファイル,ソケット,シグナルなどの情報を管理しています。
図1 task_struct構造体の概念図。プロセスが使用しているメモリーやファイル,ソケット,シグナルなどの情報を管理しています。
[画像のクリックで拡大表示]

 プロセスが使用しているメモリーやファイル,ソケット,シグナルなどの情報を管理する配列の一種です。構造体とは配列を拡張したもので,任意の情報をさまざまな形式で保存できます。
 プロセスは,プログラムを動作させるためのさまざまな情報を持っています。カーネルがプロセスを識別するためのプロセスID,プロセス自身の状態,使用しているメモリーやファイル,ソケット,シグナルなどです。これらは,プロセスを実行したり,新しくプロセスを生成したりする際に利用しています。
 task_struct構造体は,これらの情報をすべて一括して管理しています(図1)。ただしtask_struct構造体は別の構造体やテーブルへのポインタだけを管理し,実際の情報はその構造体やテーブルが保存していることもあります。構造体内の各要素をメンバーと呼びますが,task_struct構造体のメンバーは100個を超えています。
 ulimitコマンドなどを用いると,task_struct構造体のメンバーの一部を参照したり,更新したりできます。例えば,-aオプションを付けてulimitコマンドを実行すると,最大メモリー・サイズや同時に開けるファイルの数などが表示されます。